10/20 台北秋意濃
相信大家跟我一樣,遇到的檔案類型常常會依照日期或月份分成多個檔案
一個檔案寫一行來讀取檔案,實在是非常的煩.............
左思右想之後決定想個辦法來解決!!
以下是我的方式
先library(data.table)(指令需求)
使用 Sys.getenv("USERNAME") 找出本機使用者(寫路徑時用),之後設定讀取(檔案存放位置)
list.files(path,pattern = "cat") => 接下來找出存放在路徑中,名稱包含cat的檔案
#快速讀檔
library(data.table)
yourname = paste(Sys.getenv("USERNAME")) #自動找出本機使用者名稱
path = paste("c:\\Users\\",yourname,"\\Downloads\\貓空\\",sep="") #設定讀檔路徑
xls = list.files(path,pattern = "cat") #找出在路徑 : path 中名稱有cat的檔案
這時候第一個問題來了,該怎麼判讀檔案的時間進行合併呢?
我們先給定一個向量空間
hold_c_time=rep(0,length(xls)) #給定一個等於資料數量的向量空間
之後我們使用file.info() 來找出該路徑下檔案的mtime(最後修改時間)
後我們將檔案依照修改時間進行排序!
for (i in 1:length(xls)){
hold_c_time[i]=file.info(paste(path,xls[i],sep=""))[,"mtime"]
dataname=xls[order(hold_c_time,decreasing = T)]
}
排序完成後最後一步就是要將這些檔案進行合併!
這一步就相對簡單了!
我們所需的是寫一個迴圈(長度等於檔案數量),並將其以列的方式進行合併!
#讀取多檔案
for(i in 1:length(dataname))
{
if(i==1)
x=fread(paste(path,dataname[i],sep=""))
else
x=rbind(x,fread(paste(path,dataname[i],sep="")))[-length(x$星期),]
}
但由於我拿到的檔案在最後一行都會將資料進行統計
所以我必需做的是,在每一次讀檔都將此行刪除,所以加上了
[-length(x$星期),]
此code來進行刪除最後一行
以上就是今天快速讀檔的分享~~
End.